#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>

int main(){
    pid_t pid;
    pid = fork();
    // 检查fork调用是否失败
    if(pid <0){
        perror("fork failed");
        exit(1);
    }

    // 子进程分支
    if(pid == 0){
        printf("我是子进程, 我的进程号为%d\n", getpid());
        exit(0);
    }

    // 父进程分支
    if(pid > 0){
        printf("我是父进程, 我的进程号为%d\n", getpid());
        // 父进程会阻塞在wait，等待，直到子进程退出
        // 父进程等待子进程结束
        wait(NULL);
        printf("子进程已结束，主进程即将退出。\n");
        exit(0);
    }
}